/*
* Copyright (C) 2019 ~ 2021 Uniontech Software Technology Co.,Ltd.
*
* Author:     yanghongwei <yanghongwei@uniontech.com>
*
* Maintainer: yanghongwei <yanghongwei@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include "common.h"

#include <fstream>
#include <string>
#include <atomic>

#include <nlohmann/json.hpp>

#define CONFIG_FILEPATH     "config.json"

namespace common{

std::atomic<int> g_threshold(3);
nlohmann::json jsonConfig;

void readFile(const std::string &filePath)
{
    try {
        std::ifstream file(filePath);
        file >> jsonConfig;
    } catch (...) {
    }
}

void writeFile(const std::string &filePath, const nlohmann::json &json)
{
    std::ofstream file(filePath);
    file << json.dump();
}

void initConfig()
{
    readFile(CONFIG_FILEPATH);
    if (jsonConfig.contains("threshold")) {
        g_threshold.store(jsonConfig["threshold"]);
    }
}

int getThreshold()
{
    return g_threshold.load();
}

void setThreshold(int threshold)
{
    jsonConfig["threshold"] = threshold;
    writeFile(CONFIG_FILEPATH, jsonConfig);
    g_threshold.store(threshold);
}
}
